Computer graphics systems commonly are used for displaying graphical representations of objects on a two dimensional display screen. Current computer graphics systems can provide highly detailed representations and are used in a variety of applications.
In typical computer graphics systems, an object to be represented on a display screen is broken down into a plurality of graphics primitives. Primitives are basic components of a graphics picture such as points, lines, vectors and polygons (e.g., triangles). Typically, a hardware/software scheme is implemented to render (draw) on a two-dimensional display screen, the graphics primitives that comprise a view of one or more objects.
A host computer commonly provides primitive data that represents the primitives of a three-dimensional object to be rendered. When the primitive is a triangle, for example, the host computer may define the triangle in terms of the x, y, z coordinates and the red, green, blue (R, G, B) color values of each vertex. Rendering hardware interpolates the primitive data to compute the display screen pixels that constitute each primitive, and the R, G, B color values for each pixel.
The basic components of a typical computer graphics system include a geometry accelerator, a rasterizer and a frame buffer. The system also may include other hardware such as texture mapping hardware (described below). The geometry accelerator receives, from the host computer, vertex coordinate and color data for primitives that constitute an object. The geometry accelerator typically performs transformations on the vertex coordinate data (i.e., to screen space coordinates), decomposes quadrilaterals intro triangles, and may perform other functions such as lighting, clipping and performing plane equation calculations for each primitive. The output from the geometry accelerator, referred to as rendering data, is used by the rasterizer (and optional texture mapping hardware) to compute final screen space coordinates and R, G, B color values for each pixel constituting the primitives. The final data is stored in the frame buffer for display on a display screen. Some graphics systems are pipelined such that various operations (such as transformations, interpolation, etc.) are performed simultaneously by different components on different object primitives.
More sophisticated systems offer texture mapping as an option so that objects can be displayed with improved surface detail. Texture mapping is a method that involves mapping a source image, referred to as a texture, onto a surface of a three-dimensional object, and thereafter mapping the textured three-dimensional object to the two-dimensional graphics display screen to display the resulting image. Texture mapping involves applying one or more point elements (texels) of a texture to each point element (pixel) of the displayed portion of the object to which the texture is being mapped. Texture mapping hardware subsystems typically include a local memory that stores texture data associated with the portion of the object being rendered.
Pipelined graphics systems, particularly those that offer data-intensive texture mapping, commonly include complex bus structures on which data is communicated between the various components. System bandwidth often is compromised as a result. In such systems, it is common, for example, to have data paths (buses) dedicated to particular data types and operations, which paths remain otherwise unused. In the absence of such dedicated paths, the pipelined main rendering bus system may have to be flushed to perform certain operations, such as downloading texture data from the host to a local texture mapping memory. In addition, in systems having multiple chips connected in parallel, often the bus structure includes a separate bus to each of those chips, further reducing system bandwidth.
System bandwidth is directly related to the system performance. As technology advances, the host processors are capable of providing primitive data at increased speeds to the graphics rendering chips. In order to accommodate the increased technology of the host processors, a bus structure that is capable of handling high bandwidth communications is required.
It accordingly is a general object of the present invention to provide an improved bus structure and data communication protocol for a pipelined computer graphics system which maximizes system bandwidth.